package StringExercise;

import java.util.Scanner;
import java.util.StringJoiner;

/**
 * ClassName:RomanNumber
 * Package:StringExercise
 * Description:
 *
 * @Author:ZhangXin
 * @Create2023/1/17-11:06
 * @Version:v1.0
 */
public class RomanNumber001 {
    /*
     *键盘录入一个字符串
     * 要求1：长度为小于等于9
     * 要求2：只能是数字
     * 将内容变成罗马数字
     * 注意：罗马数字里面没有0的
     * 如果键盘录入的数字包含0,可变成""(长度为0的字符串) */
    public static void main(String[] args) {
        String str;
        while (true) {
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入一个字符串");
            str = sc.next();
            boolean flag = checkStr(str);
            if (flag) {
                break;
            } else {
                System.out.println("当前字符串不符合规则,请重新输入");
                continue;
            }
        }
        //将内容变成罗马数字
        StringJoiner sj = new StringJoiner(",", "[", "]");
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            int number = c - 48;//1  2  3  4  5  6  7  8  9
            String s = changeLuoMa(number);
            //System.out.println(s);
            //字符串拼接
            sj.add(s);
        }
        System.out.println(sj);
    }

    //查表法
    public static String changeLuoMa(int number) {
        String[] arr = {" ", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"};
        return arr[number];
    }

    public static boolean checkStr(String str) {
        //要求1：长度为小于等于9
        if (str.length() > 9) {
            return false;
        }
        //要求2：只能是数字
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            if (c < '0'|| c > '9') {
                return false;
            }
        }
        //只有当字符串里面所有的字符全都判断完毕了,才能认为当前的字符串是符合规则
        return true;
    }
}
